// 添加order演示逻辑
package logic

import (
	"context"
	"errors"

	"zero-demo-rpc/mall/order/api/internal/svc"
	"zero-demo-rpc/mall/order/api/internal/types"
	"zero-demo-rpc/mall/user/rpc/types/user"

	"github.com/zeromicro/go-zero/core/logx"
)

type GetOrderLogic struct {
	logx.Logger
	ctx    context.Context
	svcCtx *svc.ServiceContext
}

func NewGetOrderLogic(ctx context.Context, svcCtx *svc.ServiceContext) GetOrderLogic {
	return GetOrderLogic{
		Logger: logx.WithContext(ctx),
		ctx:    ctx,
		svcCtx: svcCtx,
	}
}

func (l *GetOrderLogic) GetOrder(req *types.OrderReq) (*types.OrderReply, error) {
	user, err := l.svcCtx.GetUserRpc().GetUser(l.ctx, &user.IdRequest{
		Id: "1",
	})
	if err != nil {
		return nil, err
	}

	if user.Name != "Michael" {
		return nil, errors.New("用户不存在")
	}

	return &types.OrderReply{
		Id:   req.Id,
		Name: "test order",
	}, nil

	// //验证用户名密码
	// if len(strings.TrimSpace(req.Username)) == 0 || len(strings.TrimSpace(req.Password)) == 0 {
	// 	return nil, errors.New("参数错误")
	// }

	// //验证用户名
	// userInfo, err := l.svcCtx.UserModel.FindOneByNumber(l.ctx, req.Username)
	// switch err {
	// case nil:
	// case model.ErrNotFound:
	// 	return nil, errors.New("用户名不存在")
	// default:
	// 	return nil, err
	// }

	// //验证密码
	// if userInfo.Password != req.Password {
	// 	return nil, errors.New("用户密码不正确")
	// }

	// // ---连接成功，用户登录成功---
	// now := time.Now().Unix()
	// accessExpire := l.svcCtx.Config.Auth.AccessExpire
	// jwtToken, err := l.getJwtToken(l.svcCtx.Config.Auth.AccessSecret, now, l.svcCtx.Config.Auth.AccessExpire, userInfo.Id)
	// if err != nil {
	// 	return nil, err
	// }

	// // ---返回用户登录信息---
	// return &types.LoginReply{
	// 	Id:           userInfo.Id,
	// 	Name:         userInfo.Name,
	// 	Gender:       userInfo.Gender,
	// 	AccessToken:  jwtToken,
	// 	AccessExpire: now + accessExpire,
	// 	RefreshAfter: now + accessExpire/2,
	// }, nil

}
